Перейти к основному содержимому

Unity SDK

Добавьте AR Clip VPS в Unity-проект. SDK определяет положение пользователя на ваших VPS-картах и размещает контент в нужном месте на устройствах с ARKit (iOS) и ARCore (Android).

Что нужно​

  • Unity 2022.3 LTS или новее
  • Тестовое устройство с поддержкой ARKit или ARCore
  • Git LFS, если вы клонируете пример проекта (в нём большие ассеты)

Установка​

Есть два способа.

Клонировать пример проекта​

git clone https://github.com/WebAR-Studio/was-vps-unity.git

Откройте проект в Unity 2022.3 или новее. Сцены в Assets/Scenes показывают рабочие настройки.

Добавить через Package Manager​

  1. Откройте Window → Package Manager.
  2. Нажмите + → Add package from Git URL….
  3. Вставьте https://github.com/WebAR-Studio/was-vps-unity.git?path=/Assets.

Unity скачает SDK в Packages/was-vps-unity.

Настройка сцены​

  1. Создайте или откройте сцену, готовую для AR Foundation. В ней должны быть AR Session и AR Session Origin.
  2. Добавьте VPSLocalisationService на пустой GameObject. Этот компонент выполняет локализацию.
  3. В Inspector укажите:
    • AR Session
    • AR Session Origin
    • AR-камеру и привязки к интерфейсу, если они нужны (см. примеры сцен)
  4. Введите свой VPS API Key и хотя бы один Location ID.
  5. Необязательно: на время отладки включите Save Images Locally или Save Logs In File.
Нужен API-ключ?

Получите его на arclip.design или напишите на support@arclip.design.

Запуск локализации​

Управляйте локализацией из своего скрипта. Добавьте компонент ниже и укажите ссылку на VPSLocalisationService в Inspector.

using UnityEngine;
using WASVPS;

public class VPSBootstrap : MonoBehaviour
{
[SerializeField] private VPSLocalisationService vpsService;

private void Start()
{
vpsService.OnPositionUpdated += HandlePositionUpdated;
vpsService.OnErrorHappend += HandleError;

var settings = new SettingsWASVPS(
new[] { "your-location-id" },
failsCountToReset: 5
);

settings.ApiKey = "your-api-key";
settings.LocalizationTimeout = 2.0f;

vpsService.StartVPS(settings);
}

private void HandlePositionUpdated(LocationState state)
{
Debug.Log($"Localized at {state.Localisation.VpsPosition}");
}

private void HandleError(ErrorInfo error)
{
Debug.LogError(error.LogDescription());
}
}

Настройки в Inspector​

СвойствоЧто делаетПо умолчанию
Start On AwakeЗапускает локализацию при загрузке сценыfalse
Force Mock In EditorПри запуске в редакторе всегда использует тестовые данныеtrue
Send GPSДобавляет GPS-данные устройства в каждый запрос к VPSfalse
Fails Count To ResetСколько неудач подряд сбрасывают сессию5
Save Images LocallyСохраняет снятые кадры для отладкиfalse

Проверка и отладка​

  • Включите Force Mock In Editor и используйте тестовые текстуры из комплекта, чтобы проверять без устройства.
  • Вызовите VPSLogger.SetLogLevel(LogLevel.VERBOSE), чтобы видеть HTTP-запросы, ответы и ошибки в консоли.
  • Если локализация так и не срабатывает, проверьте, что API-ключ действителен, а каждый ID локации соответствует вашей VPS-карте.

Примеры​

  • Рабочие примеры — Assets/Scenes/TestScene.unity и Assets/Scripts/ExampleVPS.cs в примере проекта.
  • Используйте позы VPS в своей логике: создавайте якоря, выравнивайте 3D-контент или обновляйте интерфейс.

Дальше: Платформы Unity — сборки для телефонов, шлемов и очков.